]> dgit.raspbian.org Git - ostree.git/commit
sysroot: Merge bootconfig-extra from previously staged deployment
authorJoseph Marrero Corchado <jmarrero@redhat.com>
Sat, 9 May 2026 19:18:07 +0000 (15:18 -0400)
committerJoseph Marrero Corchado <jmarrero@redhat.com>
Fri, 26 Jun 2026 02:11:28 +0000 (22:11 -0400)
commit4c0d3a819033166ec9753ff8c5fdac5db1bac813
tree9e8d0a162efaf4a046deb7e13943c417676466c3
parent6ea108187ffc6da276bef6761802d941529eb983
sysroot: Merge bootconfig-extra from previously staged deployment

When a staged deployment is replaced by a new one (e.g. bootc sets
source-tracked kargs, then rpm-ostree appends a karg before reboot),
the bootconfig-extra keys from the first staging were lost. The new
staging only checked the new deployment's bootconfig (always empty)
and fell back to the merge deployment's bootconfig (the booted BLS
file), which had no knowledge of what was in the previous staged
GVariant.

Fix this by merging bootconfig-extra from three sources in priority
order:

  1. Merge deployment's bootconfig (lowest priority)
  2. Previously staged deployment's bootconfig-extra
  3. New deployment's bootconfig (highest priority)

This ensures that x-options-source-* keys set by one consumer survive
re-staging by another consumer on the same boot.

Assisted-by: OpenCode (Claude Opus 4.6)
Signed-off-by: Joseph Marrero Corchado <jmarrero@redhat.com>
src/libostree/ostree-sysroot-deploy.c